<html lang="zh">
 <head>
  <title>
   Wiring Tool
  </title>
 </head>
 <body bgcolor="FFFFFF">
  <h1>
   <img align="center" height="32" src="../../../../icons/wiring.gif" width="32"/>
   <em>
    Wiring Tool
   </em>
  </h1>
  <p>
   <table>
    <tr>
     <td>
      <strong>
       Library:
      </strong>
     </td>
     <td>
      <a href="index.html">
       Base
      </a>
     </td>
    </tr>
    <tr>
     <td>
      <strong>
       Introduced:
      </strong>
     </td>
     <td>
      2.0 Beta 1
     </td>
    </tr>
   </table>
  </p>
  <h2>
   Behavior
  </h2>
  <p>
   The wiring tool is the tool for creating wire segments that carry
values from one endpoint to another.  The bit width of these values can
be anything; exactly which bit width is automatically inferred from the
components to which the wires are ultimately attached.  If it is not
attached to any components, the wire will be drawn gray to indicate that
its bit width is unknown; if the components at the locations that the
wire helps to connect disagree on the bit width, then the wire will be
drawn orange to indicate the conflict, and the wire will in fact refuse
to carry any values at all until the user resolves the conflict.
  </p>
  <p>
   A single drag of the mouse can create multiple wire segments. The
precise process is a little confusing in its description; but it works
quite intuitively in practice: If you request a particular wire segment
using the Wiring Tool, that segment will be split apart wherever it hits
a pin for an existing component, or wherever it hits the endpoint of an
existing wire segment. Also, if an endpoint of any of the new wire
segments hit somewhere in the middle of an existing wire, then that wire
will be split into multiple segments itself.
  </p>
  <p>
   For some components that draw short stubs to which wires can connect
(such as an
   <a href="../gates/basic.html">
    OR gate
   </a>
   or a
   <a href="../gates/controlled.html">
    controlled buffer
   </a>
   ), Logisim will
silently correct attempts to create wires that slightly overshoot the
stub's end.
  </p>
  <p>
   You can also shorten an existing wire segment using the Wiring Tool,
using a drag that starts or ends at a terminus of the segment, and that
overlaps the existing segment.
  </p>
  <p>
   All wires in Logisim are either horizontal or vertical.
  </p>
  <p>
   Wires are also non-directional; that is, they carry values from
either endpoint to the other. Indeed, a wire can carry values
in both directions simultaneously; the center wire in the below example
is doing this.
  </p>
  <p align="center">
   <img height="44" src="../../../../img-guide/bundles-splitter-2way.png" width="191"/>
  </p>
  <h2>
   Attributes
  </h2>
  <p>
   The wiring tool does not itself have attributes, but the wires that
it creates do.
  </p>
  <dl>
   <dt>
    Direction
   </dt>
   <dd>
    Indicates whether the wire is horizontal or vertical.
The value of this attribute cannot be changed.
   </dd>
   <dt>
    Length
   </dt>
   <dd>
    Indicates how many pixels long the wire is.
The value of this attribute cannot be changed.
   </dd>
  </dl>
  <h2>
   Poke Tool Behavior
  </h2>
  <p>
   When you click an existing wire segment using the Poke Tool, Logisim
displays the current value traveling through that wire.
The behavior is particularly useful for multi-bit wires, whose black
color provide no visual feedback about what value the wire is
carrying.
  </p>
  <p>
   For multi-bit values, you can configure exactly how the value
is displayed (in binary, decimal, or hexadecimal, for example) using
the
   <a href="../../guide/prefs/pref-layout.html">
    Layout
pane
   </a>
   of the Logisim Preferences dialog box.
   <p>
    <a href="../index.html">
     Back to
     <em>
      Library Reference
     </em>
    </a>
   </p>
  </p>
 </body>
</html>
